(deftemplate Meniu
    (slot nume)
    (slot fel-principal)
    )
(assert (Meniu(nume meniu1)(fel-principal friptura-vita-sange)))
(assert (Meniu(nume meniu2)(fel-principal piept-pui)))
(assert (Meniu(nume meniu3)(fel-principal miel)))
(assert (Meniu(nume meniu4)(fel-principal gasca)))
(facts)



(defrule vin1
    (Meniu (nume ?n))
    (Meniu(nume ?n)(fel-principal friptura-vita-sange))
=>
	(printout t "Pentru meniul " ?n " va recomandam un vin rosu demidulce!" crlf)
    )

(run)

(defrule vin2
    (Meniu (nume ?n))
    (Meniu(nume ?n)(fel-principal piept-pui))
=>
	(printout t "Pentru meniul " ?n " va recomandam un vin alb!" crlf)
    )

(defrule vin3
    (Meniu (nume ?n))
    (Meniu(nume ?n)(fel-principal miel))
=>
	(printout t "Pentru meniul " ?n " va recomandam un vin Merlot!" crlf)
    )

(defrule vin4
   (Meniu (nume ?n))
    (Meniu(nume ?n)(fel-principal gasca))
=>
	(printout t "Pentru meniul " ?n " va recomandam un vin Cabernet Sauvignon!" crlf)
    )

(run)



(deftemplate intrebare
(slot stringIntrebare)
(slot raspuns)
)

(assert (intrebare (stringIntrebare nil)(raspuns nil)))
(facts)

(defrule q1
(intrebare (stringIntrebare nil)(raspuns nil))
=>
(printout t "Doriti sa comandati meniul 1 ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Doriti sa comandati meniul 1")(raspuns ?r)))
)
(defrule q2
(intrebare (stringIntrebare "Doriti sa comandati meniul 1")(raspuns DA))
=>
; nu stiu cum fac legatura dintre regula vin1 si q2
)
(defrule q3
(intrebare (stringIntrebare "Doriti sa comandati meniul 1")(raspuns NU))
=>
(printout t "Va rugam alegeti alt meniu!" crlf)
)

(run)
